home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / DATABASE / MRO / TADBMRO.INT < prev    next >
Text File  |  1996-05-05  |  11KB  |  294 lines

  1. {$I TADBMRO.INC}
  2. {*********************************************************}
  3. {*             TADBMRO.PAS 2.00             *}
  4. {*     Copyright (c) Tamarack Associates 1995, 1996.     *}
  5. {*           All rights reserved.          *}
  6. {*********************************************************}
  7.  
  8. UNIT taDBMRO;
  9.  
  10. INTERFACE
  11.  
  12. USES
  13.   {$IFDEF WIN32}
  14.   Windows,
  15.   {$ELSE}
  16.   WinTypes, WinProcs,
  17.   {$ENDIF}
  18.   SysUtils, Messages, Classes, Graphics, Controls, Buttons,
  19.   Forms, Dialogs, DBConsts, DBTables, DB, Grids, DBGrids,
  20.   {$IFDEF UseInfoPower}
  21.    wwDBigrd, wwDBGrid, wwTable, wwDatSrc,
  22.   {$ENDIF}
  23.   {$IFDEF UseTwwDBLookupCombo}
  24.    wwDBLook,
  25.   {$ENDIF}
  26.   {$IFDEF UseTwwDBLookupComboDlg}
  27.    wwDBDlg,
  28.   {$ENDIF}
  29.   {$IFDEF UseOrpheus}
  30.   OvcBase, OvcEF, OvcMisc,
  31.   {$ENDIF}
  32.   {$IFDEF UseTOvcDBSimpleField}
  33.   OvcSF, OvcDbSf,
  34.   {$ENDIF}
  35.   {$IFDEF UseTOvcDBPictureField}
  36.   OvcPB, OvcPF, OvcDbPf,
  37.   {$ENDIF}
  38.   {$IFDEF UseTOvcDBNumericField}
  39.   OvcNF, OvcDbNf,
  40.   {$ENDIF}
  41.   {$IFDEF UseTDBComboBoxPlus}
  42.   DBLUP1B,
  43.   {$ENDIF}
  44.   {$IFDEF UseTDBLookupComboPlus}
  45.   DBLUP2,
  46.   {$ENDIF}
  47.   {$IFDEF UseDBLookup}
  48.   DBLookup,
  49.   {$ENDIF}
  50.   StdCtrls, Mask, DBCtrls, ExtCtrls;
  51.  
  52. TYPE
  53.   TMROFlag  = (mroAutoCursor,mroMouseClick,mroBtnWidth);
  54.   TMROFlags = SET OF TMROFlag;
  55.   TMRODrawEvent = PROCEDURE (Sender : TObject ; Control : TControl ;
  56.                        CONST CellRect : TRect) OF OBJECT;
  57.   TMROPrepareEvent = PROCEDURE (Sender : TObject ; Control : TControl ;
  58.                        VAR S : STRING) OF OBJECT;
  59.  
  60.   {$IFDEF UseInfoPower}
  61.   TtaDBMRO = CLASS(TwwDBGrid)
  62.   {$ELSE}
  63.   TtaDBMRO = CLASS(TDBGrid)
  64.   {$ENDIF}
  65.   PRIVATE
  66.    FAutoHeight        : BOOLEAN;
  67.    FAutoTitleHeight    : BOOLEAN;
  68.    FAutoWidth        : BOOLEAN;
  69.    FBackgroundColor    : TColor;
  70.    FBorderWidth     : INTEGER;
  71.    FBrush95        : TBitmap;
  72.    FBtnWidth        : INTEGER;
  73.    FChangeLock        : WORD;
  74.    FCheckBox        : TBitmap;
  75.    FCheckBox3D        : TBitmap;
  76.    FFontList        : TList;
  77.    FDither95        : BOOLEAN;
  78.    FFlags        : TMROFlags;
  79.    FHHeight        : INTEGER;
  80.    FHWidth        : INTEGER;
  81.    FIgnoreFocusChange    : BOOLEAN;
  82.    {$IFDEF WIN32}
  83.    FMouseAlreadyUp    : BOOLEAN;
  84.    {$ENDIF}
  85.    FMouseHandle     : THandle;
  86.    FMousePending    : BOOLEAN;
  87.    FMousePoint        : TPoint;
  88.    FOffsetList        : TList;
  89.    FOnDrawControl    : TMRODrawEvent;
  90.    FOnDrawBackground    : TMRODrawEvent;
  91.    FOnPrepareLookup    : TMROPrepareEvent;
  92.    FRecordPanel     : TPanel;
  93.    FSaveIdle        : TIdleEvent;
  94.    FTitlePanel        : TPanel;
  95.    FUseColor        : BOOLEAN;
  96.    FUseFont        : BOOLEAN;
  97.    FVisibleField    : INTEGER;
  98.    FVHeight        : INTEGER;
  99.    FVWidth        : INTEGER;
  100.    FWin95        : INTEGER;
  101.    FWin95SB        : INTEGER;
  102.  
  103.    PROCEDURE CheckFieldVisibility;
  104.    PROCEDURE CMColorChanged(VAR Msg : TMessage) ; MESSAGE CM_COLORCHANGED;
  105.    PROCEDURE CMFontChanged(VAR Msg : TMessage); MESSAGE CM_FONTCHANGED;
  106.    PROCEDURE CMSysColorChange(VAR Msg : TMessage); MESSAGE CM_SYSCOLORCHANGE;
  107.    PROCEDURE CMWinIniChange(VAR Msg : TMessage); MESSAGE CM_WININICHANGE;
  108.    FUNCTION  GetCheckBoxBitmap(Ctl3D : BOOLEAN) : TBitmap;
  109.    FUNCTION  IndicatorWidth : INTEGER;
  110.    FUNCTION  IsPanelChild(Control : TControl) : BOOLEAN;
  111.    PROCEDURE SetAutoHeight(Value : BOOLEAN);
  112.    PROCEDURE SetAutoWidth(Value : BOOLEAN);
  113.    PROCEDURE SetBackgroundColor(Value : TColor);
  114.    PROCEDURE SetBorderStyle(Value : TBorderStyle);
  115.    FUNCTION  GetBorderStyle : TBorderStyle;
  116.    {$IFDEF UseInfoPower}
  117.    PROCEDURE SetDataSource(Value : TwwDataSource);
  118.    FUNCTION  GetDataSource : TwwDataSource;
  119.    PROCEDURE SetOptions(Value : TwwDBGridOptions);
  120.    FUNCTION  GetOptions : TwwDBGridOptions;
  121.    {$ELSE}
  122.    PROCEDURE SetDataSource(Value : TDataSource);
  123.    FUNCTION  GetDataSource : TDataSource;
  124.    PROCEDURE SetOptions(Value : TDBGridOptions);
  125.    FUNCTION  GetOptions : TDBGridOptions;
  126.    {$ENDIF}
  127.    PROCEDURE SetRecordPanel(Value : TPanel);
  128.    PROCEDURE SetTitlePanel(Value : TPanel);
  129.    PROCEDURE SetUseColor(Value : BOOLEAN);
  130.    PROCEDURE SetUseFont(Value : BOOLEAN);
  131.    PROCEDURE WMPaint(VAR Msg : TWMPaint) ; MESSAGE WM_PAINT;
  132.    PROCEDURE WMSize(VAR Msg : TMessage) ; MESSAGE WM_SIZE;
  133.   PROTECTED
  134.    {$IFDEF UseInfoPower}
  135.    PROCEDURE CalcRowHeight ; OVERRIDE;
  136.    {$ELSE}
  137.     {$IFDEF WIN32}
  138.    PROCEDURE SetColumnAttributes ; OVERRIDE;
  139.     {$ELSE}
  140.    PROCEDURE DefineFieldMap ; OVERRIDE;
  141.     {$ENDIF}
  142.    {$ENDIF}
  143.    PROCEDURE MouseDown(Button : TMouseButton ; Shift : TShiftState ;
  144.                X, Y: Integer) ; OVERRIDE;
  145.    PROCEDURE MouseMove(Shift : TShiftState ;
  146.                X, Y: Integer) ; OVERRIDE;
  147.    PROCEDURE MouseUp(Button : TMouseButton ; Shift : TShiftState ;
  148.              X, Y: Integer) ; OVERRIDE;
  149.    PROCEDURE MemPaintHandler(VAR Msg : TWMPaint);
  150.   PUBLIC
  151.    CONSTRUCTOR Create(AOwner : TComponent) ; OVERRIDE;
  152.    DESTRUCTOR  Destroy ; OVERRIDE;
  153.    PROCEDURE ApplicationIdle(Sender : TObject ; VAR Done : BOOLEAN);
  154.    PROCEDURE DrawBorder(Style : TBorderStyle ; Ctl3D,TwoTone : BOOLEAN ;
  155.             FieldRect : TRect); VIRTUAL;
  156.    PROCEDURE DrawControl(Control : TControl ; CONST CellRect : TRect); VIRTUAL;
  157.    PROCEDURE DrawDataCell(CONST Rect : TRect ; Field : TField;
  158.               State : TGridDrawState); OVERRIDE;
  159.    PROCEDURE DrawDropDownArrow(R : TRect ; BtnWidth : INTEGER ;
  160.                    DeepShadow,IsComboBox,Enabled,UseDots,DnArrow : BOOLEAN ;
  161.                    BorderStyle : TBorderStyle);
  162.    PROCEDURE DrawString(Alignment : TAlignment ; Color : TColor ; Enabled : BOOLEAN ;
  163.             Font : TFont ; OffsetX,OffsetY : INTEGER ; Rect : TRect ;
  164.             CONST S : STRING); VIRTUAL;
  165.    PROCEDURE DrawScrollBar(R : TRect ; ScrollStyle : TScrollStyle ;
  166.                XPos,XVis,YPos,YVis : DOUBLE);
  167.    {* These procs providing drawing support for their respective controls *}
  168.    PROCEDURE DrawBevel(Control : TBevel ;
  169.               CONST CellRect : TRect) ; VIRTUAL;
  170.    PROCEDURE DrawGroupBox(Control : TGroupBox ;
  171.               CONST CellRect : TRect) ; VIRTUAL;
  172.    PROCEDURE DrawLabel(Control : TLabel ;
  173.               CONST CellRect : TRect) ; VIRTUAL;
  174.    PROCEDURE DrawPanel(Control : TPanel ;
  175.               CONST CellRect : TRect) ; VIRTUAL;
  176.    PROCEDURE DrawRadioButton(Control : TRadioButton ; CONST CellRect : TRect ;
  177.                  IsChecked : BOOLEAN) ; VIRTUAL;
  178.    PROCEDURE DrawDBCheckBox(Control : TDBCheckBox ;
  179.               CONST CellRect : TRect) ; VIRTUAL;
  180.    PROCEDURE DrawDBComboBox(Control : TDBComboBox ;
  181.               CONST CellRect : TRect) ; VIRTUAL;
  182.    PROCEDURE DrawDBEdit(Control : TDBEdit ;
  183.               CONST CellRect : TRect) ; VIRTUAL;
  184.    PROCEDURE DrawDBImage(Control : TDBImage ;
  185.               CONST CellRect : TRect) ; VIRTUAL;
  186.    PROCEDURE DrawDBListBox(Control : TDBListBox ;
  187.               CONST CellRect : TRect) ; VIRTUAL;
  188.    {$IFDEF UseTDBLookupComboBox}
  189.    PROCEDURE DrawDBLookupComboBox(Control : TDBLookupComboBox ;
  190.               CONST CellRect : TRect) ; VIRTUAL;
  191.    {$ENDIF}
  192.    {$IFDEF UseTDBLookupListBox}
  193.    PROCEDURE DrawDBLookupListBox(Control : TDBLookupListBox ;
  194.               CONST CellRect : TRect) ; VIRTUAL;
  195.    {$ENDIF}
  196.    {$IFDEF UseDBLookup}
  197.    PROCEDURE DrawDBLookupList(Control : TDBLookupList ;
  198.               CONST CellRect : TRect) ; VIRTUAL;
  199.    PROCEDURE DrawDBLookupCombo(Control : TDBLookupCombo ;
  200.               CONST CellRect : TRect) ; VIRTUAL;
  201.    {$ENDIF}
  202.    PROCEDURE DrawDBMemo(Control : TDBMemo ;
  203.               CONST CellRect : TRect) ; VIRTUAL;
  204.    PROCEDURE DrawDBRadioGroup(Control : TDBRadioGroup ;
  205.               CONST CellRect : TRect) ; VIRTUAL;
  206.    {$IFDEF UseTDBComboBoxPlus}
  207.    PROCEDURE DrawDBComboBoxPlus(Control : TDBComboBoxPlus ;
  208.               CONST CellRect : TRect) ; VIRTUAL;
  209.    {$ENDIF}
  210.    {$IFDEF UseTDBLookupComboPlus}
  211.    PROCEDURE DrawDBLookupComboPlus(Control : TDBLookupComboPlus ;
  212.               CONST CellRect : TRect) ; VIRTUAL;
  213.    {$ENDIF}
  214.    {$IFDEF UseOrpheus}
  215.    PROCEDURE DrawOrpheusText(BorderStyle : TBorderStyle ; Color : TColor ;
  216.          Font : TFont ; MaxLength : INTEGER ; Rect : TRect ;
  217.          Ctl3D,Enabled,Numeric : BOOLEAN ; Alignment : TAlignment ;
  218.          VAR S : STRING) ; VIRTUAL;
  219.    {$ENDIF}
  220.    {$IFDEF UseTOvcDBNumericField}
  221.    PROCEDURE DrawOvcDBNumericField(Control : TOvcDBNumericField ;
  222.               CONST CellRect : TRect) ; VIRTUAL;
  223.    {$ENDIF}
  224.    {$IFDEF UseTOvcDBPictureField}
  225.    PROCEDURE DrawOvcDBPictureField(Control : TOvcDBPictureField ;
  226.               CONST CellRect : TRect) ; VIRTUAL;
  227.    {$ENDIF}
  228.    {$IFDEF UseTOvcDBSimpleField}
  229.    PROCEDURE DrawOvcDBSimpleField(Control : TOvcDBSimpleField ;
  230.               CONST CellRect : TRect) ; VIRTUAL;
  231.    {$ENDIF}
  232.    PROCEDURE DrawDBText(Control : TDBText ;
  233.               CONST CellRect : TRect) ; VIRTUAL;
  234.    {$IFDEF UseTwwDBLookupCombo}
  235.    PROCEDURE DrawwwDBCustomLookupCombo(Control : TwwDBCustomLookupCombo ;
  236.               CONST CellRect : TRect) ; VIRTUAL;
  237.    {$ENDIF}
  238.    FUNCTION  FetchColor(Value : TColor) : TColor;
  239.    FUNCTION  FetchFont(Value : TFont) : TFont;
  240.    FUNCTION  GetFontOffset(AFont : TFont) : INTEGER;
  241.    PROCEDURE FieldOnExit(ActiveControl,TestControl,GotoControl : TWinControl;
  242.              GotoNext : BOOLEAN);
  243.    PROCEDURE FormKeyDown(Sender : TObject ; VAR Key : Word ; Shift : TShiftState);
  244.    PROCEDURE FormKeyDownExt(Sender : TObject ; VAR Key : Word ; Shift : TShiftState);
  245.    PROCEDURE Housekeeping;
  246.    PROCEDURE MonitorFocus(WinMsg : WORD);
  247.    PROCEDURE Notification(AComponent : TComponent ;
  248.               Operation : TOperation) ; OVERRIDE;
  249.   PUBLISHED
  250.    PROPERTY  AutoHeight : BOOLEAN READ FAutoHeight WRITE SetAutoHeight DEFAULT TRUE;
  251.    PROPERTY  AutoWidth    : BOOLEAN READ FAutoWidth  WRITE SetAutoWidth  DEFAULT TRUE;
  252.    PROPERTY  AutoTitleHeight : BOOLEAN
  253.           READ FAutoTitleHeight WRITE FAutoTitleHeight DEFAULT TRUE;
  254.    PROPERTY  BackgroundColor : TColor
  255.           READ FBackgroundColor WRITE SetBackgroundColor DEFAULT clBtnFace;
  256.    PROPERTY  BorderStyle : TBorderStyle
  257.           READ GetBorderStyle WRITE SetBorderStyle DEFAULT bsSingle;
  258.    {$IFDEF UseInfoPower}
  259.    PROPERTY  DataSource : TwwDataSource READ GetDataSource WRITE SetDataSource;
  260.    {$ELSE}
  261.    PROPERTY  DataSource : TDataSource READ GetDataSource WRITE SetDataSource;
  262.    {$ENDIF}
  263.    PROPERTY  DefaultDrawing DEFAULT FALSE;
  264.    PROPERTY  Flags : TMROFlags READ FFlags WRITE FFlags
  265.           DEFAULT [mroAutoCursor,mroMouseClick,mroBtnWidth];
  266.    PROPERTY  OnDrawControl : TMRODrawEvent READ FOnDrawControl WRITE FOnDrawControl;
  267.    PROPERTY  OnDrawBackground : TMRODrawEvent
  268.           READ FOnDrawBackground    WRITE FOnDrawBackground;
  269.    PROPERTY  OnPrepareLookup : TMROPrepareEvent
  270.           READ FOnPrepareLookup WRITE FOnPrepareLookup;
  271.    {$IFDEF UseInfoPower}
  272.    PROPERTY  Options : TwwDBGridOptions
  273.    {$ELSE}
  274.    PROPERTY  Options : TDBGridOptions
  275.    {$ENDIF}
  276.            READ GetOptions WRITE SetOptions
  277.            DEFAULT [dgEditing,dgConfirmDelete,dgCancelOnExit];
  278.    PROPERTY  RecordPanel : TPanel READ FRecordPanel WRITE SetRecordPanel;
  279.    PROPERTY  TabStop DEFAULT FALSE;
  280.    PROPERTY  TitlePanel  : TPanel READ FTitlePanel  WRITE SetTitlePanel;
  281.    PROPERTY  UseColor : BOOLEAN READ FUseColor WRITE SetUseColor DEFAULT TRUE;
  282.    PROPERTY  UseFont  : BOOLEAN READ FUseFont  WRITE SetUseFont  DEFAULT TRUE;
  283.   END;
  284.  
  285. FUNCTION  CalcRect(Control : TControl ; CONST CellRect : TRect) : TRect;
  286.  
  287. {$IFDEF WIN32}
  288.  {$R MRO32.RES}
  289. {$ELSE}
  290.  {$R MRO16.RES}
  291. {$ENDIF}
  292.  
  293. IMPLEMENTATION
  294.